Electronic devices and, more specifically, computers, were historically built-to-order (BTO) or built-to-plan (BTP). Early commercial mainframes were configured to a customer specification from a set of hardware options. Initial production of personal computers (PCs) required manufacturers to forecast demand for standard models and mandated that retailers and value-added resellers (VARs) handle customization.
Today, some PC manufacturers use a BTO model by working directly with customers, either by phone or by using the World Wide Web (WWW). The BTO model can allow a consumer to customize computers by providing choice of processor, clock speed, type of communications devices, size of hard drive, and amount of semiconductor memory, which can include dynamic read/write memory (DRAM) and video buffer.
As the industry has consolidated, PC manufacturing has evolved from integrated, in-house manufacture and assembly into a conglomeration of specialized component suppliers and diverse locales connected by air freight and sophisticated, networked supply chain management (SCM) software. Computer components can be supplied from diverse locations. For example, power supplies and displays can originate from Taiwan; DRAMs from South Korea; and disk drives from Singapore. Further, hardware can be assembled by the major electronic contract manufacturers (ECM) or original design manufacturers (ODM) that operate all over the world.
ECMs can build PCs from different manufacturers at a same facility. For example, in a Shanghai ECM facility, one manufacturer's laptops can be built from 9 a.m. to 11:30 a.m. After a short lunch, another manufacturer's laptops can be made until 2 p.m., and so on. At the end of hardware assembly of approximately 15 minutes, the operating system and other software can be loaded, adding another ninety minutes or more to the manufacturing cycle time.
Although at one time PCs were originally vendor-specific and marketed with a choice of hardware-dependent operating systems requiring customers to purchase vendor-specific software which they installed themselves, the PC market eventually consolidated around a Microsoft/Intel (WinTel) standard. Increasing complexity in the operating system drove increasing complexity in program structure.
With MS-DOS, an application developer wrote source code modules, compiled them into object code, and then linked the separate modules into a single executable image file (.EXE). Installing this .EXE file would simply be copying it, along with miscellaneous files such as documentation, data, or fonts, from the distribution medium into a directory of the computer file system and providing a path name for proper reference using a simple batch processing (.BAT) facility.
As the Microsoft operating system evolved, more files had to be copied to multiple locations, information secured in data bases, such as the Registry, and directories, paths, and shortcuts created. To assist with this complex set of tasks, software vendors such as Installshield™ created scripting products (installation wizards), that allowed application developers a flexible means of automating the process of installing software packages using INSTALL.BAT and SETUP.EXE files.
Software installation and deployment is now typically a multipart process. First, a pre-install script runs a series of operations to locate any copies of the same or earlier edition of the particular application and check the release of the operating system, the type and quantity of resources available in hardware, such as display resolution and unused disk storage, old versions of the application, and availability of necessary supporting software. Based on the search, the pre-install script creates an appropriate install script to install the software. Then, the install script typically copies a compacted set of files from a CD-ROM to memory, unpacking or decompressing the files and writing them to temporary (TEMP) files on the hard drive. The install script can create folders, copy hundreds or even thousands of files, create shortcuts, document file extension and MIME associations, create or update .INI and .INF files, set environmental variables, and modify menus. Some of this work is through modifying system files, known within Microsoft operating systems as the Registry.
From the customer perspective, a new buyer must typically enter a serial number—an alphanumeric sequence string of 20-30 characters long—to authenticate software legitimacy. Further, installation is contingent on reading and signaling acceptance of a unique contract, the End-User License Agreement (EULA), that is some 3000 words or more and binds the customer to specific terms of usage. An installation routine can prompt the customer for his or her name and company name, whether he or she wants a complete, partial, or user specified install, whether the default directory is acceptable.
If the installation finds missing or outdated common support elements such as .DLLs and Java classes, the customer can chose how to properly handle remedying the situation. Often, applications fail to load correctly if other applications run during the installation process. When an installation has successfully completed, a customer might be required to immediately register the software with a company and then finally restart the computer to activate the newly installed program.
Even on today's fastest Intel processors and high transfer rate CD-ROMs, application installation can be time consuming. CD-ROM installation is slow partly because the installation engine runs from the CD drive not the faster hard drive.
What is needed is a more efficient method for software delivery and deployment.